دستوارات نور پردازی ( LIGHT Commands ) :
 
آموزش ساخت بازی سه بعدی به زبان Basic با دارک بیسیک Dark Basic
تهیه و آموزش نرم افزار دارک بیسیک
 
 
پنج شنبه 12 ارديبهشت 1392برچسب:, :: 22:51 ::  نويسنده : ابوالفضل

 با استفاده از دستورات این فصل می توانیم نور ایجاد کنیم . می توانیم رنگ آن ها ، جهت پخش ( جهتی که نور به آن سمت تابیده می شود ) و فاصله ای برد نورها ( مقدار فاصله ای که نور باید تا آن فاصله تابش داشته باشد ) و همچنین موقعیت مکانی آن ها را در فضای سه بعدی مشخص کنیم .

 
دستور MAKE LIGHT
با استفاده از این دستور می توانیم از 1 تا 7 نور جدید ایجاد کنیم . مانند دستورالعمل زیر :
 
MAKE LIGHT LightNumber
 
طبق این دستورالعمل به جای LightNumber شماره ای بین 1 تا هفت برای نام نورهای جدیدمان قرار می دهیم . یعنی تنها هشت نور می تواند در صحنه وجود داشته باشد . بعلاوه نور شماره ی صفر که نور پیش فرض صحنه است و همیشه وجود دارد . مانند مثال زیر :
 
Make Light 5
Wait Key
 
در این مثال نوری با شماره ی 5 ایجاد شد .
 
دستور DELETE LIGHT
این دستور نور ایجاد شده را از صحنه حذف می کند . مانند مثال زیر :
 
Make Light 1
Make Light 2
Delete Light 1
Wait Key
 
در این مثال نور هایی با شماره های 1 و 2 ایجاد و سپس نور شماره ی 1 حذف شد .
 
نکته : نور شماره ی صفر که نور پیش فرض صحنه است را نمی توانیم حذف کنیم .
 
دستور HIDE LIGHT
این دستور نور موجود در صحنه را غیر فعال می کند . یعنی با اجرای این دستور ، وجود نور مورد نظر هیچ تاثیری بر روی صحنه نخواهد داشت . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Cone 6,10
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,0
Wait 2000
Hide Light 0
Wait Key
 
در این مثال نور شماره ی صفر که نور پیش فرض صحنه است ، غیر فعال ( بی تاثیر ) می شود .
 
دستور SHOW LIGHT
اگر با دستور قبلی (HIDE LIGHT ) نوری را غیر غعال کرده بودیم . با این دستور می توانیم آن نور را دوباره فعال کنیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Cone 6,10
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,0
Hide Light 0
Wait 2000
Show Light 0
Wait Key
 
دستور POSITION LIGHT
با این دستور موقعت مکانی نور مورد نظرمان را در فضای سه بعدی مشخص می کنیم . مانند دستورالعمل زیر :
 
POSITION LIGHT LightNumber,X,Y,Z
 
طبق این دستورالعمل به جای LightNumber شماره ی نور مورد نظر و به جای X و Y و Z فاصله ی نور تا محور های X و Y و Z مختصات فضای سه بعدی را قرار می دهیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Hide Light 0 : Make Light 1
Sync On : Sync Rate 30
intAngle As Integer = 0
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Position Light 1,X,Y,Z
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
در این مثال نور شماره یک با موقعت مکانی کره ( پا به پای کره ) حرکت می کند .
 
دستور SET LIGHT RANGE
این دستور مشخص می کند که نور مورد نظرمان تا چه مسافتی را روشن کند ( با چه شدتی پخش شود ) . مانند مثال زیر :
 
Make Object Sphere 1,10 : Position Object 1,0,-50,100
Make Object Sphere 2,10 : Position Object 2,0,150,150
Make Object Sphere 3,10 : Position Object 3,70,80,150
Make Object Sphere 4,10 : Position Object 4,-30,50,130
Make Object Sphere 5,10 : Position Object 5,10,100,120
Make Object Sphere 6,10 : Ghost Object On 6
Position Object 6,0,20,150
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,40,-50
Hide Light 0 : Make Light 1
Position Light 1,0,20,150
Sync On : Sync Rate 30
intRange As Integer = 0
Do
Inc intRange : If intRange > 1000 Then intRange = 0
Set Light Range 1,intRange
(Text 10,10,"Light Range ="+Str$(intRange
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
دستور COLOR LIGHT
این دستور رنگ نور مورد نظرمان را تعیین می کند . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Hide Light 0 : Make Light 1
(Color Light 1,Rgb(255,0,0
Sync On : Sync Rate 30
intAngle As Integer = 0
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Position Light 1,X,Y,Z
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
نورها در DarkBasic به دو دسته تقسیم می شوند .
1- نور نقطه ای یا همه سویه (POINT LIGHT )
نور نقطه ای نوری است که تمام اطراف خود را نورپردازی می کند . مانند خورشید و یا شمع .
2- نور جهت دار (SPOT LIGHT )
نور جهت دار تنها یک جهت را روشن می کند . مانند چراغ ماشین و یا پروژکتور ها که تنها به یک جهت نورپردازی دارند .
 
با ایجاد نور جدید توسط دستور Make Light نور از نوع Point Light یعنی نور نقطه ای ایجاد می شدند . مانند خورشید . می توانیم توسط دستورات Set Spot Light و Set Point Light نوع نور ها را عوض کنیم . مانند دستورات زیر :
 
دستور SET POINT LIGHT
با استفاده از این دستور نور مورد نظرمان را به نور نقطه ای ( Point Light ) تبدیل می کنیم . مانند دستورالعمل زیر :
 
SET POINT LIGHT LightNumber,X,Y,Z
 
طبق این دستورالعمل به جای LightNumber شماره ی نور و به جای X و Y و Z مختصات نور را در فضا مشخص می کنیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Set Point Light 0,0,0,0
(Color Light 0,Rgb(255,255,0
Sync On : Sync Rate 30
intAngle As Integer = 0
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Position Light 0,X,Y,Z
((Text 10,10,"X = "+Str$(Light Position X(0
((Text 10,30,"Y = "+Str$(Light Position Y(0
((Text 10,50,"Z = "+Str$(Light Position Z(0
Rotate Light 0,0,90,0
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
در این مثال نور پیش فرض را به نور نقطه ای تبدیل کردیم . سپس آن را در محیط می گردانیم .
 
دستور SET NORMALIZATION ON و دستور SET NORMALIZATION OFF
دستور Set Normalization On باعث می شود که نوردهی به اشیاء ، حالت نرمال و نرمی داشته باشد و دستور Set Normalization Off این حالت را خنثی می کند .
 
دستور SET SPOT LIGHT
این دستور نور مورد نظر را به نور جهت دارد تبدیل می کند . مانند دستورالعمل زیر :
 
SET SPOT LIGHT LightNumber,InnerAngle,OuterAngle
 
طبق این دستورالعمل به جای LightNumber شماره ی نور مورد نظر و به جای InnerAngle شعاع داخلی نوری که پخش می شد به شکل مخروط را قرار می دهیم و به جای OuterAngle شعاع خارجی نوری که پخش می شود بصورت تار و به شکل مخروط است ( نیمه شفاف است تا طبیعی به نظر برسد ) را قرار می دهیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 :Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
hide Light 0
make light 2
set spot light 2,45,90
color light 2,512,100,100
position light 2,0,100,0
Set Normalization On
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Control Camera Using Arrowkeys 0,1,1
rotate light 2,0,intAngle,0
Sync
Loop
 
دستور POINT LIGHT
با این دستور می توانیم جهت نور را با استفاده از مختصات یک نقطه ی فرضی در فضا مشخص کنیم . مانند دستورالعمل زیر :
 
POINT LIGHT LightNumber,X,Y,Z
 
طبق این دستورالعمل به جای LightNumber شماره ی نور مورد نظر و به جای X و Y و Z مختصات یک نقطه ی فرضی در فضا را قرار می دهیم ، تا نور به آن نقطه نگاه کند . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 :Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
hide Light 0
make light 2
set spot light 2,45,90
color light 2,512,100,100
position light 2,0,100,0
Set Normalization On
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Control Camera Using Arrowkeys 0,1,1
rotate light 2,0,intAngle,0
Point Light 2,0,0,500
Sync
Loop
 
دستور ROTATE LIGHT
این دستور نور مورد نظر را حول محور های X و Y و Z خودش می چرخاند . البته تاثیر این دستور فقط برای نورهایی از نوع Spot Light می باشد ، چون نور همه سویه به همه ی اطراف نور پخش می کند و چرخش آن تاثیری بر محیط نخواهد داشت . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
hide Light 0
make light 2
set spot light 2,45,90
color light 2,512,100,100
position light 2,0,100,0
Set Normalization On
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Control Camera Using Arrowkeys 0,1,1
rotate light 2,0,intAngle,0
Point Light 2,0,0,500
Sync
Loop
 
دستور FOG ON
این دستور باعث ایجاد مه در صحنه می شود .
 
دستور FOG COLOR
با این دستور رنگ مه ایجاد شده در صحنه را مشخص می کنیم .
 
دستور FOG DISTANCE
این دستور میزان دید دوربین را در مه مشخص می کند ، که کمترین دید دوربین حالتی است که در آن ،Fog Distance  برابر صفر است ، که هیچ چیز جز مه دیده نمی شود و بیشترین دید دوربین حالتی است که در آن Fog Distance برابر 5000 باشد ، که همه چیز دیده می شود و مه تاثیر بسیار کمی دارد . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
fog on
fog distance 3500
(fog color rgb(128,128,255
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
دستور FOG OFF
این دستور باعث حذف مه از صحنه می شود .


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:







درباره وبلاگ


به وبلاگ من خوش آمدید
آخرین مطالب
پيوندها

تبادل لینک هوشمند
برای تبادل لینک  ابتدا ما را با عنوان آموزش ساخت بازی 3D ( سه بعدی ) به زبان Basic با دارک بیسیک D و آدرس darkbasic.LXB.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.





نويسندگان


آمار وب سایت:  

بازدید امروز : 1
بازدید دیروز : 56
بازدید هفته : 1
بازدید ماه : 149
بازدید کل : 99761
تعداد مطالب : 24
تعداد نظرات : 3
تعداد آنلاین : 1